介绍
观察者模式又叫发布订阅模式(Publish/Subscribe),一个目标对象管理所有相依于它的观察者对象。该模式中存在两个角色:观察者和被观察者。目标对象与观察者之间的抽象耦合关系能够单独扩展以及重用。
该模式通常有两种实现策略:”推”(push) 和 “拉”(pull)
例:对于报社可能雇佣投送人员四处送报给订阅者,这就是主动推送。而对于规模小的报社没有足够的资源去雇佣投送员,这时候可以采取 “拉” 的方式。就是在订阅者附近提供自己的数据,供订阅者 “拉” 自己所需的数据。
实现
push
1 | var Observable = { |
pull
1 | var Observable = {} |
被观察对象将通知所有的观察者,并且每个观察者将从被观察对象中提取所需的信息。
让多个对象都具有观察者发布订阅的功能
1 | var observer = { |
避免创建多个被观察者对象,可以增加 “命名空间”
1 | var Observable = { |
相关阅读
javascript-observer-publish-subscribe-pattern
深入理解JavaScript系列(32):设计模式之观察者模式
javascript-patterns-observer